package u2

import (
	"crypto/md5"
	"encoding/hex"
)

// Md5 计算字符串的32位小写MD5哈希值
//
// 参数：
//
//	s - 要计算哈希的字符串
//
// 返回值：
//
//	32位小写MD5字符串
//
// 示例：
//
//	hash := Md5("hello") // 返回 "5d41402abc4b2a76b9719d911017c592"
func Md5(s string) string {
	h := md5.New()
	h.Write([]byte(s))
	return hex.EncodeToString(h.Sum(nil))
}

// Md5_16 计算字符串的16位小写MD5哈希值
//
// 参数：
//
//	s - 要计算哈希的字符串
//
// 返回值：
//
//	16位小写MD5字符串
//
// 示例：
//
//	hash := Md5_16("hello") // 返回 "c4b2a76b9719d911"
func Md5_16(s string) string {
	h := md5.New()
	h.Write([]byte(s))
	return hex.EncodeToString(h.Sum(nil))[8:24]
}
